大家好,昨天介紹到新增完namespace以及model的畫面,接下來我們要往更細部更細節的地方來介紹,首先我們來介紹一下底下這部分的程式碼吧。
add_payload = add_ns.model('數字加總', {
'number one': fields.Integer(default=1),
'number two': fields.Integer(default=2)
})
add_output = add_ns.model('數字加總結果', {
'number total': fields.Integer(default=3)
})
model這部分的程式碼,會對應到底下這張圖片
點開來之後,就可以看到對於model的描述以及變數名稱、資料類型,跟程式碼比對一下一清二處,只是field有很多用法,有Integer也有基本的String、list,甚至還有比較複雜的Nested......等等,這邊我不一一嘗試給大家看,有興趣的夥伴可以到官方文件看更多。
接下來我們來看看這部分程式碼對應的部分
@add_ns.route('/add')
class Add(Resource):
@add_ns.expect(add_payload)
@add_ns.marshal_with(add_output)
def post(self):
data = add_ns.payload
x = data["number one"]
y = data["number two"]
result = x+y
print(result)
return result
從最上面那欄往下看,我們可以先看到http method跟url,http method是根據我們定義的方法名稱而改變,使用route定義url,expect可以根據我設計的model展示Parameters,marshal_with可以根據我設計的model展示Responses。
我們描述完之後還能夠利用swagger做測試,先點一下「Try it out」
再點一下「Execute」
會在預期的Responses上面又出現一個,這就是我們的結果,我們可以看到我們發送請求api完整的url,回傳http method & http status以及回傳的資料
大致上都有稍稍理解之後,相信你也大概看得懂namespace在幹嘛了吧~~ 如果我在新建一個namespace的話會長這樣。
又多了一個雙胞胎兄弟test_namespace,基本上這就可以拿來區分不同架構、類別的api,雖然我不是什麼很強的軟體工程師,但是這看起來挺讚的吧。
那麼今天就告一段落啦~~ 明天我要來介紹celery & redis